cmake_minimum_required(VERSION 3.16)

# 设置项目名和语言支持
project(FFT C CXX)  # 项目名称为FFT，支持C和C++语言
# 设置C++标准为C++20
set(CMAKE_CXX_STANDARD 20)
# 添加编译器选项：在Windows/MSVC上强制使用UTF-8编码
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>") # 针对C++编译器
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")    # 针对C编译器
# 设置可执行文件输出目录为项目根目录下的bin文件夹
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
# 查找MATLAB安装路径和必要组件
find_package(Matlab REQUIRED COMPONENTS MAIN_PROGRAM)
message(STATUS "Matlab_ROOT_DIR: ${Matlab_ROOT_DIR}")
# 添加MATLAB外部头文件目录
include_directories(${Matlab_ROOT_DIR}/extern/include)
# 设置MATLAB Coder生成的FFT库路径
# 假设MATLAB Coder生成的库文件位于项目中的FFT/codegen/lib/FFT目录
set(FFT_lib_dir FFT/codegen/lib/FFT)
message(STATUS ${FFT_lib_dir})
# 查找FFT库文件
# 支持查找不同平台下的库文件（Windows: FFT.lib, Linux/macOS: libFFT.a）
find_library(FFT_lib 
    NAMES FFT FFT.lib FFT.a  # 尝试匹配的库文件名
    PATHS ${FFT_lib_dir}     # 搜索路径
)
message(STATUS "${FFT_lib}")
# 创建可执行目标FFT，源文件为main.cpp
add_executable(FFT main.cpp)
# 添加FFT库的头文件目录
target_include_directories(FFT PRIVATE ${FFT_lib_dir})
# 链接FFT库到可执行文件
target_link_libraries(FFT PRIVATE ${FFT_lib})
